home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / GFA basic training.adf / Requester / AUSWAHLBOX.LST < prev    next >
File List  |  1989-06-01  |  5KB  |  214 lines

  1. @aufruf
  2. PROCEDURE aufruf
  3.   DIM wahl$(40)
  4.   DATA Eins,Zwei,Drei
  5.   DATA Vier,Fünf,Sechs,Sieben,Acht,Neun,Zehn
  6.   DATA Elf,Zwölf,Dreizehn,Vierzehn,Fünfzehn,Sechzehn,Siebzehn,Achtzehn,Neunzehn,Zwanzig
  7.   DATA Einundzwanzig,Zweiundzwanzig,Dreiundzwanzig,Vierundzwanzig,Fünfundzwanzig,Sechsundzwanzig,Siebenundzwanzig,Achtundzwanzig,Neunundzwanzig,Dreißig
  8.   DATA Einunddreißig,Zweiunddreißig,Dreiunddreißig,Vierunddreißig,Fünfunddreißig,Sechsunddreißig,Siebenunddreißig,Achtunddreißig,Neununddreißig,Vierzig
  9.   FOR i=1 TO 40
  10.     READ wahl$(i)
  11.   NEXT i
  12.   @auswahl_box(250,33,40,"Bitte wählen Sie",wahl$(),a!())
  13.   FOR i=1 TO 40
  14.     IF a!(i)=FALSE
  15.       PRINT wahl$(i)
  16.     ENDIF
  17.   NEXT i
  18.   REPEAT
  19.   UNTIL MOUSEK=1 OR INKEY$=CHR$(13)
  20. RETURN
  21. '
  22. PROCEDURE auswahl_box(x&,y|,n|,u$,VAR wahl$(),a!())
  23.   LOCAL hintergrund$,teil$,taste$,ok!,revers!,markiert!,ende!,m$
  24.   LOCAL b&,p&,l&,re&,taste&,ma|,i|,l|,erster|,l1|,l2|
  25.   LOCAL l3|,l4|,eintrag|,nummer|,revers|,richtung|
  26.   '
  27.   DIM a!(n|)
  28.   ARRAYFILL a!(),TRUE
  29.   ok!=FALSE
  30.   revers!=FALSE
  31.   markiert!=TRUE
  32.   DEFFILL 1
  33.   '
  34.   ma|=LEN(u$)
  35.   FOR i|=1 TO n|
  36.     ma|=MAX(ma|,LEN(wahl$(i|)))
  37.   NEXT i|
  38.   '
  39.   IF n|>10
  40.     l|=120
  41.   ELSE
  42.     l|=(n|*12)
  43.   ENDIF
  44.   '
  45.   b&=SUCC(INT(MAX((ma|*8)+30,156)/10))*10
  46.   GET x&,y|,x&+b&+1,y|+l|+37,hintergrund$
  47.   COLOR 0
  48.   PBOX x&,y|,x&+b&,y|+l|+36
  49.   COLOR 1
  50.   INC x&
  51.   INC y|
  52.   BOX x&,y|,x&+b&,y|+12
  53.   mittig|=LEN(u$)*4
  54.   TEXT x&+b&/2-mittig|,y|+9,u$
  55.   BOX x&,y|+12,x&+b&,y|+23
  56.   BOX x&,y|+23,x&+b&,y|+23+l|
  57.   BOX x&,y|+23+l|,x&+b&,y|+34+l|
  58.   IF n|>10
  59.     i|=y|+l|+28
  60.     LINE x&+2,i|,x&+6,i|+4
  61.     LINE x&+6,i|+4,x&+10,i|
  62.     LINE x&+3,i|-4,x&+3,i|
  63.     LINE x&+3,i|-4,x&+9,i|-4
  64.     LINE x&+9,i|-4,x&+9,i|
  65.     '
  66.     LINE x&+2,y|+18,x&+6,y|+14
  67.     LINE x&+6,y|+14,x&+10,y|+18
  68.     LINE x&+3,y|+17,x&+3,y|+21
  69.     LINE x&+3,y|+21,x&+9,y|+21
  70.     LINE x&+9,y|+21,x&+9,y|+17
  71.     GET x&+2,y|+14,x&+10,i|+4,m$
  72.     FOR p&=x&+11 TO x&+b& STEP 10
  73.       PUT SUCC(p&),ADD(y|,14),m$
  74.     NEXT p&
  75.   ELSE
  76.     DEFFILL ,3
  77.     FILL x&+3,y|+15
  78.     FILL x&+3,y|+25+l|
  79.   ENDIF
  80.   '
  81.   LINE x&+15,y|+23,x&+15,y|+23+l|
  82.   FOR i|=0 TO MIN(PRED(n|),9)
  83.     TEXT x&+3,y|+31+i|*12,i|
  84.   NEXT i|
  85.   '
  86.   DEC x&
  87.   DEC y|
  88.   BOX x&,y|,x&+b&,y|+l|+36
  89.   FOR l&=y|+23 TO y|+23+l| STEP 12
  90.     LINE x&,l&,x&+b&,l&
  91.   NEXT l&
  92.   FOR i|=1 TO MIN(n|,10)
  93.     TEXT x&+b&/2-(LEN(wahl$(i|))*8)/2,y|+20+i|*12,wahl$(i|)
  94.   NEXT i|
  95.   '
  96.   erster|=1
  97.   re&=x&+b&
  98.   l1|=y|+12
  99.   l2|=l1|+11
  100.   l3|=l2|+l|
  101.   l4|=l3|+11
  102.   @a_box
  103.   PUT x&,y|,hintergrund$
  104.   hintergrund$=""
  105. RETURN
  106. PROCEDURE a_box
  107.   REPEAT
  108.     @taste
  109.     '
  110.     IF MOUSEX>x& AND MOUSEX<re& AND MOUSEY>l2| AND MOUSEY<l3| AND MOUSEK<>2
  111.       ' Mauszeiger im Auswahlfeld
  112.       eintrag|=MAX(0,(MOUSEY-y|-24)/12)
  113.       @revers(eintrag|)
  114.       @haken
  115.     ELSE
  116.       @revers(10)
  117.     ENDIF
  118.     '
  119.     IF MOUSEX>x& AND MOUSEX<re& AND MOUSEY>l1| AND MOUSEY<l2| AND MOUSEK=1 AND erster|<n|-9
  120.       ' Mauszeiger im oberen Scrollfeld
  121.       @scroll(1)
  122.     ELSE IF MOUSEX>x& AND MOUSEX<re& AND MOUSEY>l3| AND MOUSEY<l4| AND MOUSEK=1 AND erster|>1
  123.       ' Mauszeiger im unteren Scrollfeld
  124.       @scroll(0)
  125.     ENDIF
  126.   UNTIL MOUSEK=2 OR ende!=TRUE
  127. RETURN
  128. PROCEDURE revers(nummer|)
  129.   IF revers!=TRUE AND revers|<>nummer|        !Revers off
  130.     GET x&+19,y|+25+revers|*12,x&+b&-3,y|+33+revers|*12,revers$
  131.     PUT x&+19,y|+25+revers|*12,revers$,30
  132.     revers!=FALSE
  133.   ELSE IF revers!=FALSE AND nummer|<10        !Revers on
  134.     GET x&+19,y|+25+nummer|*12,x&+b&-3,y|+33+nummer|*12,revers$
  135.     PUT x&+19,y|+25+nummer|*12,revers$,30
  136.     revers!=TRUE
  137.     revers|=nummer|
  138.   ENDIF
  139. RETURN
  140. PROCEDURE scroll(richtung|)
  141.   IF richtung|
  142.     INC erster|
  143.   ELSE
  144.     DEC erster|
  145.   ENDIF
  146.   GET x&+17,y|+25+richtung|*12,x&+b&-1,y|+10+l|+richtung|*12,teil$
  147.   PUT x&+17,y|+37-richtung|*12,teil$
  148.   DEFFILL 0
  149.   PBOX x&+18,y|+25+richtung|*108,x&+b&-1,y|+34+richtung|*108
  150.   DEFFILL 1
  151.   TEXT x&+5+b&/2-(LEN(wahl$(erster|+richtung|*9))*8)/2,y|+32+richtung|*108,wahl$(erster|+richtung|*9)
  152.   IF a!(erster|+richtung|*9)=FALSE
  153.     COLOR 1
  154.     LINE x&+b&-10,y|+30+richtung|*108,x&+b&-7,y|+33+richtung|*108
  155.     LINE x&+b&-7,y|+33+richtung|*108,x&+b&-3,y|+25+richtung|*108
  156.   ENDIF
  157. RETURN
  158. PROCEDURE taste
  159.   taste$=INKEY$
  160.   IF taste$<>""
  161.     IF LEN(taste$)=1
  162.       taste&=ASC(taste$)
  163.     ELSE
  164.       taste&=ASC(RIGHT$(taste$))
  165.     ENDIF
  166.     SELECT taste&
  167.     CASE 65
  168.       IF erster|<n|-9
  169.         @revers(10)
  170.         @scroll(1)
  171.       ENDIF
  172.     CASE 66
  173.       IF erster|>1
  174.         @revers(10)
  175.         @scroll(0)
  176.       ENDIF
  177.     CASE 48 TO 57
  178.       SUB taste&,48
  179.       IF taste&<n|
  180.         IF a!(erster|+taste&)=TRUE
  181.           a!(erster|+taste&)=FALSE
  182.           COLOR 1
  183.           LINE x&+b&-10,y|+30+taste&*12,x&+b&-7,y|+33+taste&*12
  184.           LINE x&+b&-7,y|+33+taste&*12,x&+b&-3,y|+25+taste&*12
  185.         ELSE
  186.           a!(erster|+taste&)=TRUE
  187.           COLOR 0
  188.           LINE x&+b&-10,y|+30+taste&*12,x&+b&-7,y|+33+taste&*12
  189.           LINE x&+b&-7,y|+33+taste&*12,x&+b&-3,y|+25+taste&*12
  190.         ENDIF
  191.       ENDIF
  192.     CASE 13
  193.       ende!=TRUE
  194.     ENDSELECT
  195.     taste$=""
  196.   ENDIF
  197. RETURN
  198. PROCEDURE haken
  199.   IF MOUSEK=1 AND ok!=FALSE
  200.     IF a!(erster|+eintrag|)=TRUE
  201.       a!(erster|+eintrag|)=FALSE
  202.       COLOR 1
  203.       LINE x&+b&-10,y|+30+eintrag|*12,x&+b&-7,y|+33+eintrag|*12
  204.       LINE x&+b&-7,y|+33+eintrag|*12,x&+b&-3,y|+25+eintrag|*12
  205.     ELSE
  206.       a!(erster|+eintrag|)=TRUE
  207.       COLOR 3
  208.       LINE x&+b&-10,y|+30+eintrag|*12,x&+b&-7,y|+33+eintrag|*12
  209.       LINE x&+b&-7,y|+33+eintrag|*12,x&+b&-3,y|+25+eintrag|*12
  210.     ENDIF
  211.   ENDIF
  212.   ok!=MOUSEK
  213. RETURN
  214.